A representational state transfer (REST) application programming interface (API) is a software architecture style associated with a client-server model. In a REST API each element type on a server may be represented by a uniform resource locator (URL). Requests are sent from a client to the server using hypertext transfer protocol (HTTP) using HTTP verbs such as, GET, POST, PUT, and DELETE. These HTTP verbs may be used to read, post, delete, and update data to a server.
A REST API provides many advantages over other more restrictive architectural styles, such as simple object access protocol (SOAP). For example, a REST API enables users to expose existing functionality in a programmable way, such as exposing an existing API as a web service. Enabling clients to view the code for APIs is sometimes desirable because it enables customers to integrate APIs into automation workflow with greater ease.
In at least some existing systems, functionality supported by a REST API is exposed to all clients. This is problematic because not all features should be exposed to all clients. For example, some features may not be licensed by a particular user. In addition, there may be multiple different platforms of a given storage system release. Some features may not be supported by a particular product instantiation platform or packaging. A developer or product team may also wish to hide some immature features which are still under development.